/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import Dao.EspacioDeportivoJpaController;
import Dao.exceptions.NonexistentEntityException;
import Dao.exceptions.PreexistingEntityException;
import Logica.EspacioDeportivo;
import java.util.List;
import java.util.Random;
import javax.persistence.EntityManagerFactory;

/**
 *
 * @author Invitado
 */
public class ControladorEspacioDeportivo {
    private EspacioDeportivoJpaController daoEspacioDeportivo;
    private EntityManagerFactory factory;
    private ConnectionFactory connection;
    
    public ControladorEspacioDeportivo()
    {
        connection = ConnectionFactory.getFactory();
        factory= connection.getFactoria();
        this.daoEspacioDeportivo = new EspacioDeportivoJpaController(factory);
    }
    
    public boolean guardEspacioDeportivo(String nombre, int capacidad, String direccion)
    {
        boolean exito=true;
        Random aleatorio = new Random();
        String idEspacio = ""+aleatorio.nextInt();
        EspacioDeportivo espacio = new EspacioDeportivo();
        espacio.setIdEspacio(idEspacio);
        espacio.setNombre(nombre);
        espacio.setCapacidad(capacidad);
        espacio.setDireccion(direccion);
        
        while(this.daoEspacioDeportivo.findEspacioDeportivo(idEspacio)!=null)
        {
            idEspacio = ""+aleatorio.nextInt();
            espacio.setIdEspacio(idEspacio);
        }
        
        try 
        {
            this.daoEspacioDeportivo.create(espacio);
        } 
        catch (PreexistingEntityException ex) 
        {
            exito=false;
        } 
        catch (Exception ex) 
        {
            exito=false;
        }
        
        return exito;
    }
    
    public boolean editarEspacioDeportivo(String id, String nombre, int capacidad, String direccion)
    {
        boolean exito=true;
        EspacioDeportivo espacio = new EspacioDeportivo();
        espacio.setIdEspacio(id);
        espacio.setNombre(nombre);
        espacio.setCapacidad(capacidad);
        espacio.setDireccion(direccion);
        try 
        {
            this.daoEspacioDeportivo.edit(espacio);
        }
        catch (NonexistentEntityException ex) 
        {
            exito=false;
        } 
        catch (Exception ex) 
        {
            exito=false;
        }
        
        return exito;
    }
    
    public boolean eliminarEspacioDeportivo(String id)
    {
        boolean exito=true;
        try 
        {
            this.daoEspacioDeportivo.destroy(id);
        }
        catch (NonexistentEntityException ex) 
        {
            exito=false;
        }
        
        return exito;
    }
    
    public EspacioDeportivo consultarEspacioDeportivo(String id)
    {
        EspacioDeportivo espacio;
        espacio=this.daoEspacioDeportivo.findEspacioDeportivo(id);
        return espacio;
    }
    
    public List<EspacioDeportivo> consultarEspaciosDeportivos()
    {
        return this.daoEspacioDeportivo.findEspacioDeportivoEntities();
    }
}
